<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>01 - 变量数据类型(转换)</title>
</head>

<body>
    <script>
        // js 中数据类型分类如下:





        // A. 简单类型:
        // ☛    数字类型         (number)
        // ☛    字符串类型       (string)
        // ☛    布尔类型         (boolean)
        // ☛    undefined 类型   (undefined)

        // B. 复杂类型
        // ☛    对象 (object)
        // ☛    函数 (function)
        // ☛    数组 (object)





        // 程序中如何获取变量的数据类型?    查看数据类型
        // 语法:  typeof(变量)

        // 代码演示:
        let a;
        console.log(typeof(a)); // undefined 类型  (undefined)

        let b = 1;
        console.log(typeof(b)); // 数字类型  (number)

        let c = '字符串类型';
        console.log(typeof(c)); // 字符串类型  (string)

        let d = true; // false
        console.log(typeof(d)); // 布尔类型  (boolean)





        // 1. 转数字类型
        // ☛ 通过   Number(变量) 方式转换为数字类型          Number() 保留原来的值
        // ☛ 通过   parseInt(变量) 方式转换为数字类型        parseInt() 只会得到整数部分
        // ☛ 通过   parseFloat(变量) 方式转换为数字类型      parseFloat() 保留原来的值

        // 代码演示:
        let aa = '字符串';
        let bb = Number(aa);
        console.log(typeof(bb)); // 数字类型  (number)





        // 2. 转字符串类型
        // ☛ 写法一:  变量.toString();     不能将 undefined 类型转换为字符串类型
        // ☛ 写法二:  String(变量);        可以将任何的数据类型转为字符串类型

        // 代码演示:
        let aaa = true;
        bbb = aaa.toString();           // bbb 就是转换数据类型后的结果
        console.log(typeof(bbb));       // 字符串类型  (string)

        let ccc = 123;
        ddd = String(ccc);
        console.log(typeof(ddd));       // 字符串类型  (string)





        // 3. 转布尔类型
        // ☛ 语法:   Boolean(变量);    布尔类型转换后,原来变量的值发生改变,要么是 true, 要么是 false
        //                             布尔类型转换后,有一些固定的特殊值转换后是 false
        //                             空字符串    数字0    undefined    null  

        // 代码演示:
        let eee = true;
        fff = Boolean(eee);
        console.log(typeof(fff));       // 布尔类型  (boolean)
        console.log(fff);               // true
    </script>
</body>

</html>


<script>
    // 变量提升     只有 var 关键字才会有变量提升
</script>